The present invention relates to mass storage of computer systems. More particularly, the invention relates to a write-behind enablement process which allows writing of data to multiple volumes of storage media associated with one or more server nodes in a distributed processing environment.
In a distributed client/server storage environment, a client process will send data for storage to a remote server node, which writes the data to the actual storage medium. The ability to write data to remote storage medium allows an application program to use hardware that is associated with processors other than the one the application program is running on. The sharing of hardware resources in this way is a main advantage of a distributed computing environment. In order to improve performance within such an environment, it is desirable that the client program write several blocks of data to the server node for storage before reading a response from the server node to see if the transferred blocks of data have been written correctly. This technique of writing to the server node multiple blocks of data before confirming at a predetermined interval that the data has been correctly written is referred to as a xe2x80x9cwrite-behindxe2x80x9d function. With this function, communication overhead and delays between the client and server are minimized.
One difficulty with the write-behind process occurs because the client node does not continually check for status after sending each block of data. It will not be notified that the storage medium is full until the predetermined number of blocks have been sent to the server. Thus, the client node may only be notified of an end of volume condition after it has sent several additional blocks of data following the first block of data that would not fit in the storage medium.
One way that previous products have handled this problem is to require the client program to know the size of the storage medium before writing to it. As the client writes blocks of data to the storage medium, it knows that after a pre-specified number of blocks it must stop writing, and transition to a new storage medium. By doing this, the client never sends extra blocks to the server that cannot be written to the existing medium, and the problem is avoided.
There are two penalties for requiring the client to know the size of the storage media ahead of time. The first is that it is inconvenient to the programmer who must specify the storage medium size. The second is that in order to be safe, the maximum number of blocks is often not written to the storage medium. Thus, part of each storage medium may go unused.
In view of the above, a different approach to data transfer interfacing of the client and server nodes is desired.
Briefly summarized, in a first aspect the present invention comprises a method of storing data in a distributed processing system which has multiple processors, one processor being a client node and one or more other processors each being a server node. Each server node has at least one storage medium associated therewith. The method includes: writing blocks of data from a client process of the client node to a first storage medium of a first server node of the distributed processing system, the writing continuing until all blocks of data to be stored by the client process are written to the first storage medium or until a physical end of storage is reached for the first storage medium, wherein the physical end of storage is reached without size of the first storage medium having been predetermined; if the physical end of storage is reached for the first storage medium, switching writing blocks of data from the client node to a second storage medium of a second server node of the distributed processing system, wherein the switching of writing is transparent to the client process; and wherein the writing blocks of data from the client process to the first storage medium and to the second storage medium comprise write-behind operations, and the first server node and the second server node periodically notify the client node whether previously received blocks of data have been correctly written to the first storage medium or the second storage medium, respectively.
In another aspect, a method of storing data in a distributed processing system having multiple processors is provided. One processor of the system is a client node and one or more other processors each comprise server nodes. Each server node has at least one storage medium associated therewith. The method includes: writing blocks of data from a client process of the client node to a first storage medium of a first server node of the system, the writing continuing until a physical end of storage is reached for the first storage medium, wherein the physical end of storage is reached without having predetermined a size of the first storage medium; after the physical end of storage is reached for the storage medium, switching the writing of data blocks to a second storage medium, the second storage medium being an additional storage medium of the first server node or a storage medium associated with a second server node of the system; wherein the writing of blocks of data to the first storage medium comprises a write-behind operation with the first server node periodically notifying the client node whether previously received blocks of data have been written correctly to the first storage medium; and ascertaining for the client process how many blocks of data were written to the first storage medium.
In a further aspect, a method of storing data in a distributed processing system having multiple processors is provided. One processor is designated a client node and one or more other processors comprise server nodes, with each server node having at least one storage medium associated therewith. The method includes: writing blocks of data from a client process of the client node to a first storage medium of a first server node of the distributed processing system, the writing continuing until a physical end of storage is reached for the first storage medium, wherein the physical end of storage is reached without having predetermined a size of available storage in the first storage medium; writing a header label to a second storage medium when the physical end of the first storage medium is reached, the second storage medium comprising one storage medium of the first server node or one storage medium of a second server node of the distributed processing system; switching the writing of blocks of data to the second storage medium after the physical end of the first storage medium is reached; and wherein the writing blocks of data to the first storage medium comprises a write-behind operation in which the first server node periodically notifies the client node whether the previously received blocks of data have been written correctly to the first storage medium.
The concepts presented herein produce numerous advantages over conventional client/server interfacing for a write-behind process in a distributed processing environment. First, enhanced flexibility is provided by allowing the client application to store blocks of data to storage media associated with different processors within the distributed environment. Thus, a client application may switch writing blocks of data from a first tape mounted on a first drive on a first processor to a second tape mounted on a second drive of a second processor in the distributed processing system. Further, with an application programming interface as described herein, it is possible for client programs to track exactly how many blocks of data have been written to each storage medium so that future access to a specific block of data on a specific storage medium is possible. Advantageously, enhanced flexibility is provided herein to the client application for the client program to write its own headers. The multi-volume data transfer process disclosed herein allows a client process to use the full capacity of the storage medium in a multiple tape volume backup without requiring prior knowledge on the size of each tape when writing the blocks of data. Thus, the present invention provides better storage performance within a distributed tape environment.